Modern computing systems often employ various types of storage servers. Storage servers are used for a variety of purposes, such as to provide multiple users with access to shared data and to back up mission critical data. A file server, for example, is a type of storage server which operates on behalf of one or more clients to store and manage shared files in a set of mass storage devices, such as magnetic or optical storage based disks or tapes. The mass storage devices are typically organized into one or more volumes of Redundant Array of Independent (or Inexpensive) Disks (RAID).
One configuration in which a file server can be used is a network attached storage (NAS) configuration. In a NAS configuration, a file server can be implemented in the form of an appliance, called a filer, that attaches to a network, such as a local area network (LAN) or a corporate intranet. An example of such an appliance is any of the Filer products made by Network Appliance, Inc. in Sunnyvale, Calif.
A storage server can also be employed in a storage area network (SAN) environment. A SAN is a highly efficient network of interconnected, shared storage devices. One difference between NAS and SAN is that in a SAN, the storage server (which may be an appliance) provides a remote host with block-level access to stored data, whereas in a NAS configuration, the storage server provides clients with file-level access to stored data. Some storage servers, such as certain Filers from Network Appliance, are capable of operating in either a NAS mode or a SAN mode or even both modes at the same time. Such dual-use devices are sometimes referred to as “unified storage” devices.
It is desirable to allow third parties software developers to develop applications that can access and/or control processes that run on a filer. Doing so can enhance and add value to such devices. However, development of such applications by third parties can be costly and complicated and risk having an unintended negative impact on other processes of the storage server. As a result, relatively few third party applications are available at present. It is desirable, therefore, to facilitate the development of such third party applications, without requiring that all such applications be developed by one company, while reducing the risk of a negative impact on the storage server.